/******************************************************************************** /
 * WordEntry.java - JPLearning Project											*
 * 																				*
 * 		This program is free software; you can redistribute it and/or modify	*
 *		it under the terms of the GNU General Public License as published by	*
 *		the Free Software Foundation; version 2 of the License.					*
 *																				*
 *		This program is distributed in the hope that it will be useful,			*
 *		but WITHOUT ANY WARRANTY; without even the implied warranty of			*
 *		MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the			*
 *		GNU General Public License for more details.							*
 *																				*
 ********************************************************************************/
package org.jplearning.model;

import java.util.LinkedList;
import java.util.List;

public class WordEntry {
	public static final String NOMBRE = "NOMBRE";
	public static final String ABR_NOMBRE = "(n)";
	
	public static final String ADJETIVO = "ADJETIVO";
	public static final String ABR_ADJETIVO = "(adj)";
	
	public static final String VERBO ="VERBO";
	public static final String ABR_VERBO = "(vb)";
	
	public static final String ADVERBIO = "ADVERBIO";
	public static final String ABR_ADVERBIO = "(adv)";
	
	public static final String PARTICULA = "PARTICULA";
	public static final String ABR_PARTICULA = "(part)";
	
	private String tipoPalabra;
	private List significados;
	private List ejemplos;
	
	public static String getAbreviatura(String tipo){
		if(NOMBRE.equals(tipo)) return ABR_NOMBRE;
		if(ADJETIVO.equals(tipo)) return ABR_ADJETIVO;
		if(VERBO.equals(tipo)) return ABR_VERBO;
		if(ADVERBIO.equals(tipo)) return ABR_ADVERBIO;
		if(PARTICULA.equals(tipo)) return ABR_PARTICULA;
		return "";
	}
	
	public static String getComplete(String tipo){
		if(ABR_NOMBRE.equals(tipo)) return NOMBRE;
		if(ABR_ADJETIVO.equals(tipo)) return ADJETIVO;
		if(ABR_VERBO.equals(tipo)) return VERBO;
		if(ABR_ADVERBIO.equals(tipo)) return ADVERBIO;
		if(ABR_PARTICULA.equals(tipo)) return PARTICULA;
		return "";
	}
	
	public WordEntry(String tipoPalabra){
		setTipoPalabra(tipoPalabra);
		significados = new LinkedList();
		ejemplos = new LinkedList();
	}
	
	/**
	 * @param tipoPalabra
	 */
	private void assertTipoPalabra(String tipoPalabra) throws IllegalArgumentException{
		if(
			!NOMBRE.equals(tipoPalabra) &&
			!ADJETIVO.equals(tipoPalabra) &&
			!VERBO.equals(tipoPalabra) &&
			!ADVERBIO.equals(tipoPalabra) &&
			!PARTICULA.equals(tipoPalabra)
		)
		{
			throw new IllegalArgumentException("Tipo de palabra. Argumento no valido");
		}
	}

	/**
	 * @return
	 */
	public List getEjemplos() {
		return ejemplos;
	}

	/**
	 * @return
	 */
	public List getSignificados() {
		return significados;
	}

	/**
	 * @return
	 */
	public String getTipoPalabra() {
		return tipoPalabra;
	}

	/**
	 * @param list
	 */
	public void setEjemplos(List list) {
		ejemplos = list;
	}

	/**
	 * @param list
	 */
	public void setSignificados(List list) {
		significados = list;
	}

	/**
	 * @param string
	 */
	public void setTipoPalabra(String tipoPalabra){
		assertTipoPalabra(tipoPalabra);
		this.tipoPalabra = tipoPalabra;
	}

}
